<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var nums = [11, 9, 2, 8, 12, 5, 3, 19, 40, 6, 17, 38];

        // // 找nums的最大值  
        // // 准备一个变量  把第一个元素放进去  假设这个元素最大 
        // // 从第二元素到最后一个元素  挨个跟它进行比较 
        // // 如果比它大 替换它   
        // // 循环结束  变量中就是最大值  
        // var max = nums[0];
        // for(var i=1;i<nums.length;i++){
        //     // i是nums的下标
        //     if(nums[i]>max){
        //         max = nums[i]
        //     }
        // }
        // console.log(max);


        // // 找nums的最小值 
        // // 准备一个变量  把第一个元素放进去  假设这个元素最小 
        // // 从第二元素到最后一个元素  挨个跟它进行比较 
        // // 如果比它小 替换它   
        // // 循环结束  变量中就是最小值  

        // var min = nums[0];
        // for(var i=1;i<nums.length;i++){
        //     // i是nums的下标
        //     if(nums[i]<min){
        //         min = nums[i]
        //     }
        // }
        // console.log(min);

        // 第一轮  找到所有的最大值 或最小值所在的索引  跟下标[0] 交换 下标[0]就是最大值或者最小值
        // 第二轮  下标0 就不参与了 找剩下的最大值 或者最小值所在的索引   跟下标[1] 交换 下标[1]就是第二大 或者第二小 
        // 第三轮  下标1 就不参与了 找剩下的最大值 或者最小值 所在的索引  跟下标[2] 交换 下标[2]就是第三大 或者第三小 

        // 第一轮做的事情  
        // console.log('原来的',nums);
        // var max = nums[0];
        // for(var i=1;i<nums.length;i++){
        //     // i是nums的下标
        //     if(nums[i]>max){
        //         max = nums[i]
        //     }
        // }

        // var temp = nums[0];
        // nums[0] = max;
        // max = temp

        // console.log('第一轮以后',nums);

        // [40, 9, 2, 8, 12, 5, 3, 19, 40, 6, 17, 38]
        // 所以 这种写法不太对 
        // 应该是最大值的坐标 跟 下标 0 的元素相交换 
        // [40, 9, 2, 8, 12, 5, 3, 19, 11, 6, 17, 38]



        // 优化  

        // 找到最大值 或者最小值所在的下标   
        // 第一轮优化后的代码
        // var maxIndex = 0;
        // console.log(nums)
        // for (var i = 1; i < nums.length; i++) {
        //     // i是nums的下标
        //     if (nums[i] > nums[maxIndex]) {
        //         maxIndex = i
        //     }
        // }

        // var temp = nums[0];
        // nums[0] = nums[maxIndex];
        // nums[maxIndex] = temp

        // console.log('第一轮以后', nums)

        // // 第二轮 
        // var maxIndex = 1; // 默认下表1是最大的  
        // console.log(nums)
        // for (var i = 2; i < nums.length; i++) {
        //     // i是nums的下标
        //     if (nums[i] > nums[maxIndex]) {
        //         maxIndex = i
        //     }
        // }

        // var temp = nums[1];
        // nums[1] = nums[maxIndex];
        // nums[maxIndex] = temp

        // console.log('第2轮以后', nums)


        // // 第三轮 
        // var maxIndex = 2; // 默认下表1是最大的  
        // console.log(nums)
        // for (var i = 3; i < nums.length; i++) {
        //     // i是nums的下标
        //     if (nums[i] > nums[maxIndex]) {
        //         maxIndex = i
        //     }
        // }

        // var temp = nums[2];
        // nums[2] = nums[maxIndex];
        // nums[maxIndex] = temp

        // console.log('第3轮以后', nums)

        // console.group('------------')


        //找规律   
        /* 第几轮    假设最大值索引  循环开始的位置    跟下标几交换
        1           0               1                   0
        2           1               2                   1
        3           2               3                   2   */

        for (var j = 1; j < nums.length; j++) { // 12个数字 最大 11轮
            // 外边的循环控制总共几轮 
            // 里边是每一轮的事情   
            var maxIndex = j-1; // 默认下表1是最大的  
            for (var i = j; i < nums.length; i++) {
                // i是nums的下标
                if (nums[i] > nums[maxIndex]) {
                    maxIndex = i
                }
            }

            var temp = nums[j-1];
            nums[j-1] = nums[maxIndex];
            nums[maxIndex] = temp

            console.log(`第${j}轮以后`, nums)
        }

        console.groupEnd('------------')
    </script>
</body>

</html>